package com.itheima.nio.buffer.demo01;

import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;

/**
 * 演示ByteBuffer的基本使用
 */
public class ByteBufferDemo01 {

    public static void main(String[] args) throws Exception {

        // 构建ByteBuffer对象
        /**
         * public static ByteBuffer allocate(int capacity)				创建一个指定容量的新缓存区
         * public static ByteBuffer wrap(byte[] array)					初始化一个具有数据的缓冲区
         */
         ByteBuffer byteBuffer = ByteBuffer.allocate(10);
         System.out.println(byteBuffer);

        // public static ByteBuffer wrap(byte[] array)					初始化一个具有数据的缓冲区
//        String s = "abcd" ;
//        byte[] bytes = s.getBytes("UTF-8");
//        ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);
//        System.out.println(byteBuffer);

        System.out.println("-------------------------------------------------------");

        /**
         * public final int capacity()								获取容量
         * public final int limit()									获取限制
         * public final int position()								获取位置
         * public final int remaining()								返回当前位置和限制之间的位置数。
         * public final boolean hasRemaining()						判断当前位置和限制之间是否存在位置
         *
         * public Buffer limit(int newLimit)						设置限制
         * public Buffer position(int newPosition)					设置位置
         */
        // public final int capacity()								获取容量
        System.out.println(byteBuffer.capacity());

        // public final int limit()									获取限制
        System.out.println(byteBuffer.limit());

        // public final int position()								获取位置
        System.out.println(byteBuffer.position());

        // public final int remaining()								返回当前位置和限制之间的位置数
        System.out.println(byteBuffer.remaining());

        // public final boolean hasRemaining()						判断当前位置和限制之间是否存在位置
        System.out.println(byteBuffer.hasRemaining());

        System.out.println("--------------------------------------------");

        // public Buffer limit(int newLimit)						设置限制
        byteBuffer.limit(5) ;
        System.out.println(byteBuffer);

        // public final int remaining()								返回当前位置和限制之间的位置数
        System.out.println(byteBuffer.remaining());

        System.out.println("--------------------------------------------");

        // public Buffer position(int newPosition)					设置位置
        byteBuffer.position(6) ;
        System.out.println(byteBuffer);

        // public final int remaining()								返回当前位置和限制之间的位置数
        System.out.println(byteBuffer.remaining());

        // public final boolean hasRemaining()						判断当前位置和限制之间是否存在位置
        System.out.println(byteBuffer.hasRemaining());

    }

}
